/*
 * @Author: byron
 * @Date: 2022-01-18 21:56:33
 * @LastEditTime: 2022-02-08 01:16:07
 */


import Vue from 'vue'
import component from './loading' // 引入上边定义好的message模板

const LoadingConstructor = Vue.extend(component) // 使用Vue.extend来创建一个构造器
let loadingInstance


const CreateLoading = (options = {}) => {
    // 如果当前定时器已开启，说明页面上已经有一个message-box了，则不能再继续创建新的message-box
    // 对options做处理，如果直接传入string，则使其保存在options的message属性上
    if (typeof options === 'string') {
        options = {
            message: options,
        }
    }


    loadingInstance = new LoadingConstructor({
        data: options,
    })

    loadingInstance.close = function () {
        if (this.$el && this.$el.parentNode) {
            setTimeout(() => {
                this.$destroy()
                this.$el.parentNode.removeChild(this.$el)
            }, 500)
        }

    }
    loadingInstance.vm = loadingInstance.$mount()
    document.body.appendChild(loadingInstance.vm.$el)


    return loadingInstance.vm
}






export default {
    CreateLoading,
    install(Vue) {
        Vue.prototype.$loading = CreateLoading
    },
}